
diff -r e29281594440 -r 9d9b5f3a97cd src/vigra_impex/png.cxx
--- a/src/vigra_impex/png.cxx	Mon Nov 09 11:10:35 2009 +0100
+++ b/src/vigra_impex/png.cxx	Mon Apr 12 14:52:44 2010 +0200
@@ -65,10 +65,20 @@
 #include <png.h>
 }
 
+#define STRINGIFY(m_argument) #m_argument
+
 #if PNG_LIBPNG_VER < 10201
 #error "please update your libpng to at least 1.2.1"
 #endif
 
+#if PNG_LIBPNG_VER >= 10400
+#define PNG_SET_EXPAND_GRAY_1_2_4_TO_8_NAME png_set_expand_gray_1_2_4_to_8
+#else
+#define PNG_SET_EXPAND_GRAY_1_2_4_TO_8_NAME png_set_gray_1_2_4_to_8
+#endif
+#define PNG_SET_EXPAND_GRAY_1_2_4_TO_8_FUNCTION_NAME STRINGIFY(PNG_SET_EXPAND_GRAY_1_2_4_TO_8_NAME)
+#define PNG_SET_EXPAND_GRAY_1_2_4_TO_8(m_image) PNG_SET_EXPAND_GRAY_1_2_4_TO_8_NAME(m_image)
+
 // TODO: per-scanline reading/writing
 
 namespace {
@@ -274,8 +284,8 @@
         // expand gray values to at least one byte size
         if ( color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 ) {
             if (setjmp(png->jmpbuf))
-                vigra_postcondition( false,png_error_message.insert(0, "error in png_set_gray_1_2_4_to_8(): ").c_str());
-            png_set_gray_1_2_4_to_8(png);
+                vigra_postcondition( false, png_error_message.insert(0, "error in " PNG_SET_EXPAND_GRAY_1_2_4_TO_8_FUNCTION_NAME " (): ").c_str());
+            PNG_SET_EXPAND_GRAY_1_2_4_TO_8(png);
             bit_depth = 8;
         }
 




